package com.gitee.wsl.ext.list

import kotlin.math.min


/**
 * splice( index: number, number: number, ...value: T): T[]
 *
 *
 * splice并不负责拼接集合，splice一个集合将使得该集合成为原集合中的一个元素，拼接集合应使用concat splice改变原集合
 */
fun <T> MutableList<T>.splice( index: Int, number: Int): List<T> {
    val list = this
    val ret: MutableList<T>
    // remove
    if (number != 0) {
        val endIndex: Int = min(list.size, index + number)
        if (endIndex <= index) return ArrayList(0)

        ret = ArrayList(endIndex - index)
        for (i in index..<endIndex) {
            ret.add(list.removeAt(index))
        }
    } else {
        ret = ArrayList(0)
    }
    return ret
}

//fun <T>  MutableList<T>.splice( index: Int, number: Int, vararg values: T): List<T> {
//    val ret = splice(index, number)
//    // add
//    if (values.isNotEmpty()) {
//        expandList(this, index)
//        addAll(index, values.toList())
//    }
//    return ret
//}
//
//private fun <T> expandList(c: MutableCollection<T>, index: Int) {
//    for (i in c.size..<index) {
//        c.add(null)
//    }
//}